//package com.example.cinemaorder.util;
//
//import java.sql.Connection;
//import java.sql.DriverManager;
//import java.sql.ResultSet;
//import java.sql.Statement;
//import java.util.ArrayList;
//import java.util.List;
//
//import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
//import org.apache.mahout.cf.taste.model.DataModel;
//import org.apache.mahout.cf.taste.recommender.RecommendedItem;
//import org.apache.mahout.cf.taste.recommender.ItemBasedRecommender;
//import org.apache.mahout.cf.taste.similarity.ItemSimilarity;
//import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
//
////推荐电影：基于物品的协同过滤算法
//public class MovieRecommender {
//
//    // 数据库连接信息
//    private static final String DB_URL = "jdbc:mysql://192.168.159.166:33306/cinema_system";
//    private static final String DB_USER = "root";
//    private static final String DB_PASSWORD = "123";
//
//    // 数据库表名和列名
//    private static final String RATINGS_TABLE = "ratings";
//    private static final String USER_ID_COLUMN = "user_id";
//    private static final String MOVIE_ID_COLUMN = "movie_id";
//    private static final String RATING_COLUMN = "rating";
//    private static final String MOVIES_TABLE = "movies";
//    private static final String MOVIE_TITLE_COLUMN = "title";
//
//    // 推荐物品数量
//    private static final int RECOMMENDATION_SIZE = 5;
//
//    public static void main(String[] args) {
//        try {
//            // 加载数据库驱动
//            Class.forName("com.mysql.jdbc.Driver");
//            // 获取数据库连接
//            Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
//            // 创建数据模型，从ratings表中读取用户和电影的评分数据
//            DataModel dataModel = new MySQLJDBCDataModel(conn, RATINGS_TABLE, USER_ID_COLUMN, MOVIE_ID_COLUMN, RATING_COLUMN, null);
//            // 创建物品相似度度量，使用皮尔逊相关系数
//            ItemSimilarity itemSimilarity = new PearsonCorrelationSimilarity(dataModel);
//            // 创建物品推荐器，使用基于物品的协同过滤算法
//            ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);
//
//            // 测试用户ID，可以修改为其他值
//            int userId = 1;
//            // 获取推荐结果，根据预测的评分，选择Top-N个物品推荐给用户
//            List<RecommendedItem> recommendations = recommender.recommend(userId, RECOMMENDATION_SIZE);
//            // 输出推荐结果
//            System.out.println("为用户" + userId + "推荐以下电影：");
//            for (RecommendedItem recommendation : recommendations) {
//                // 获取物品ID
//                long movieId = recommendation.getItemID();
//                // 获取物品标题，从movies表中查询
//                String movieTitle = getMovieTitle(conn, movieId);
//                // 获取预测评分
//                float rating = recommendation.getValue();
//                // 输出物品标题和预测评分
//                System.out.println(movieTitle + "，评分：" + rating);
//            }
//            // 关闭数据库连接
//            conn.close();
//        } catch (Exception e) {
//            // 处理异常
//            e.printStackTrace();
//        }
//    }
//
//    // 根据物品ID，从movies表中查询物品标题
//    public static String getMovieTitle(Connection conn, long movieId) throws Exception {
//        // 创建SQL语句
//        String sql = "SELECT " + MOVIE_TITLE_COLUMN + " FROM " + MOVIES_TABLE + " WHERE " + MOVIE_ID_COLUMN + " = " + movieId;
//        // 创建Statement对象
//        Statement stmt = conn.createStatement();
//        // 执行SQL语句，获取结果集
//        ResultSet rs = stmt.executeQuery(sql);
//        // 如果结果集不为空，返回第一条记录的物品标题
//        if (rs.next()) {
//            return rs.getString(MOVIE_TITLE_COLUMN);
//        }
//        // 否则，返回空字符串
//        return "";
//    }
//}
